package thread;

/**
 * Thread：线程
 * 多线程的演示
 * 线程：线性的执行流程，指的是线程中一个单一的顺序执行流程
 * 多线程：多个顺序执行流程“同时”执行
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
       MyThread1 t1 = new MyThread1();
       MyThread2 t2 = new MyThread2();
       /*
       启动线程要调用线程的start方法，而不是直接调用run方法
       当我们调用一个线程的start方法后，线程就启动了，随后run方法会很快自动执行
        */
       t1.start();
       t2.start();
    }
}

/**
 * 这种创建方法的优点：
 * 结构简单，适合匿名内部类方式创建
 * 缺点：
 * 1.由于java是单继承的，这导致如果我们继承了thread就无法继承其他类型去复用方法了
 * 2.重写run方法，将线程要执行的任务定义在线程中，这导致线程与任务是紧耦合的
 */
class MyThread1 extends Thread{//第一步继承Thread
    public void run(){//第二步重写run方法，run方法是线程要执行的代码
        for (int i = 0; i < 1000 ; i++) {
            System.out.println("你几把谁啊？");
        }
    }
}
class  MyThread2 extends Thread{
   public void run(){
       for (int i = 0; i < 1000; i++) {
           System.out.println("开门，老子查水表的！");
       }
   }
}
